package com.leesche.zcsp.node.utils.calculator;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Map;

/**
 * @author Jerry Chan
 * @version V1.0
 * @Title: node
 * @Package com.leesche.zcsp.node.utils.calculator
 * @Description:( 金额计算 )
 * @date 2016年11月03日 13:08
 */
public class Calculation {

    private static String amountFormat = "###,###,###,##0.00";

    private static BigDecimal percentage = new BigDecimal(100);
    private static DecimalFormat df = new DecimalFormat(amountFormat);

    /**
     * @return 带有金额格式的数值
     * @Title: addition(Map<Long, Boolean> mathematical)
     * @Description: TODO(金融计算 -> 金额单位转换 [ 可计算百分比 ])
     * @author Jerry Chan
     * @date 2016/11/25 15:56
     */
    public static String addition(Map<Long, Boolean> mathematical) {
        BigDecimal bd = null;

        for (Map.Entry<Long, Boolean> entry : mathematical.entrySet()) {
            //判断是否需要计算百分比
            if (entry.getValue() == true) {
                bd = new BigDecimal(entry.getKey()).divide(percentage);
            } else {
                bd = new BigDecimal(entry.getKey());
            }
            bd.add(bd);
        }
        return df.format(bd.doubleValue());
    }

    /**
     * @return 带有金额格式的数值
     * @Title: addition(long mathematical)
     * @Description: TODO(金融计算 -> 金额单位转换)
     * @author Jerry Chan
     * @date 2016/11/25 16:20
     */
    public static String addition(long mathematical) {
        return df.format(new BigDecimal(mathematical).doubleValue());
    }

    /**
     * @return
     * @Title: addition(long mathematical1, long mathematical2)
     * @Description: TODO(金融计算 -> 金额单位转换 [ 两数相加 ])
     * @author Jerry Chan
     * @date 2016/11/25 16:34
     */
    public static String addition(long mathematical1, long mathematical2) {
        return df.format(new BigDecimal(mathematical1 + mathematical2).doubleValue());
    }

    /**
     * @Title: addition(BigDecimal mathematical)
     * @Description: TODO( 金融计算 -> 金额单位转换 )
     * @author Jerry Chan
     * @date 2016/11/25 17:08
     * @return
     */
    public static String addition(BigDecimal mathematical) {
        return df.format(mathematical.doubleValue());
    }

    /** 
     * @Title: addition(long mathematical,boolean flag)
     * @Description: TODO( 金融计算 -> 金额单位转换 [ 计算百分比 ] )
     * @author Jerry Chan
     * @date 2016/11/25 16:49
     * @return 
     */
    public static BigDecimal divide(long mathematica1){
        return new BigDecimal(mathematica1).divide(percentage);
    }

}
